package com.cskaoyan.javase.oop.exercise5;

/**
 * @description: 值传递
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * Java是值传递，方法会拿到变量的拷贝。然后对于引用数据类型会拿到引用的拷贝，这个拷贝仍然指向原先的对象，这个时候使用拷贝修改对象，原先的对象就跟着变化了
 * 改变对象的属性叫做改变对象的状态
 * 但是不能够改变引用中装的地址值，引用指向哪个对象它改变不了
 *
 *
 */
public class Demo2 {
    public static void main(String[] args) {
        //创建对象
        Student s1 = new Student(81);
        Student s2 = new Student(18);
        swapStudentAge(s1, s2);
        System.out.println(s1.age);//18
        System.out.println(s2.age); //81

    }

    public static void swapStudentAge(Student s1, Student s2) {
        //搞一个临时工来交换age
        int temp;
        temp = s1.age;
        s1.age = s2.age;
        s2.age = temp;
    }
}

class Student {
    int age;

    public Student() {
    }

    public Student(int age) {
        this.age = age;
    }
}